package com.essc.mapper;

import org.apache.ibatis.annotations.Param;

import java.util.Date;
import com.essc.pojo.Order;

import java.util.List;

public interface OrderMapper {

    /*---------------------------按钮接口方法-----------------------------------------*/

    //生成订单（处理中 status=1）
    int makeOrder(Order order);

    //取消订单/支付失败 根据oid更新order.status为0
    int cancelOrder(Integer oid);

    //订单完成 根据oid更新order.status为2
    int finishOrder(Integer oid);

    //确认发货 卖家确认发货-根据oid更新order.status为3
    int confirmSendOrder(Integer oid);

    //确认签收 买家确认收货-根据oid更新order.status为4
    int confirmReceipt(Integer oid);

    //发起退货请求 买家发起退货请求-根据oid更新order.status为-1
    int requestGoodRejected(Integer oid);

    //同意退货 卖家同意退货请求-根据oid更新order.status为0
    int agreeGoodRejected(Integer oid);

    //根据oid更新订单的交易方式为自提
    int orderBySelf(Integer oid);

    //根据传来的apotime更新自提时间
    int updateApotime(@Param("oid") Integer oid,
                      @Param("apoTime") Date apoTime);

    //根据oid更新订单的交易方式为送货上门
    int orderBySend(Integer oid);

    //根据传来的sendtime更新上门时间
    int updateSendTime(@Param("oid") Integer oid,
                       @Param("sendTime") Date sendTime);

    /*--------------------------------买家用户查订单-----------------------------------*/

    //买家用户查找单个进行中订单 order.status为1
    Order findOwnerOrderInP(@Param("uid") Integer uid, @Param("gid") Integer gid);

    //买家用户查看自己所有待支付的订单 order.status为1
    List<Order> findOrderInProgress(Integer uid);

    //买家用户查看自己查看失效订单 order.status为0
    List<Order> findInvalidOrder(Integer uid);

    //!!买家用户查看已支付待发货订单 order.status为2
    List<Order> findCompletedOrder(Integer uid);

    //!!买家用户查看已发货待签收订单 order.status为3
    List<Order> findOrderToBeSigned(Integer uid);

    //!!买家用户查看已签收订单 order.status为4
    List<Order> findOrderSigned(Integer uid);

    //!!买家用户查退款中订单 order.status为-1
    List<Order> findOrderRefunding(Integer uid);

    /*-----------------------------------卖家用户查订单--------------------------------------*/

    /*当订单已支付商品自动下架 故查看已下架商品的完成订单需要【商品管理-已售空商品】*/
    //卖家用户在商品管理查看已支付订单 order.status为2
    /*其实不用返回list 返回order对象就好了 不过懒得改了2333*/
    /*卖家用户在商品管理中对单商品查看单订单操作*/
    List<Order> findSellOrder(Integer gid);

    /*卖家用户查看订单管理 已支付订单status=2*/
    List<Order> findAllCompletedOrder(String[] gids);

    /*卖家用户查看订单管理 待签收订单status=3*/
    List<Order> findAllOrderToBeSigned(String[] gids);

    /*卖家用户查看订单管理 已签收订单status=4*/
    List<Order> findAllOrderSigned(String[] gids);

    /*卖家用户查看订单管理 待退款订单status=-1*/
    List<Order> findAllRefundedOrder(String[] gids);

    /*卖家用户查看订单管理 已失效订单status=0*/
    List<Order> findAllInvalidOrder(String[] gids);

    /*----------------------------------接口用----------------------------------*/

    /*根据oid查找订单*/
    Order findOneOrder(Integer oid);


}

